#include "gtkcssstylepropertyprivate.h"
#include "gtkdragdest.h"
#include "gtkeventcontrollerkey.h"
+#include "gtkeventcontrollermotion.h"
#include "gtkgesturedrag.h"
#include "gtkgesturemultipress.h"
#include "gtkgestureprivate.h"
return TRUE;
}
-static gboolean
-captured_event_cb (GtkWidget *widget,
- GdkEvent *event)
+static void
+gtk_window_capture_motion (GtkWidget *widget,
+ gdouble x,
+ gdouble y)
{
GdkCursor *cursor = NULL;
- gdouble x, y;
gint i;
const gchar *cursor_names[8] = {
"nw-resize", "n-resize", "ne-resize",
"sw-resize", "s-resize", "se-resize"
};
- if (gdk_event_get_event_type (event) != GDK_MOTION_NOTIFY)
- return GDK_EVENT_PROPAGATE;
- if (!gdk_event_get_coords (event, &x, &y))
- return GDK_EVENT_PROPAGATE;
-
for (i = 0; i < 8; i++)
{
if (edge_under_coordinates (GTK_WINDOW (widget), x, y, i))
if (cursor)
g_object_unref (cursor);
-
- return GDK_EVENT_PROPAGATE;
}
static void
GtkWidget *widget;
GtkCssNode *widget_node;
GdkSeat *seat;
+ GtkEventController *motion_controller;
#ifdef GDK_WINDOWING_X11
GdkContentFormats *targets;
#endif
g_signal_connect (seat, "device-removed",
G_CALLBACK (device_removed_cb), window);
- _gtk_widget_set_captured_event_handler (widget, captured_event_cb);
+ motion_controller = gtk_event_controller_motion_new ();
+ gtk_event_controller_set_propagation_phase (motion_controller,
+ GTK_PHASE_CAPTURE);
+ g_signal_connect_swapped (motion_controller, "motion",
+ G_CALLBACK (gtk_window_capture_motion), window);
+ gtk_widget_add_controller (widget, motion_controller);
priv->key_controller = gtk_event_controller_key_new ();
g_signal_connect_swapped (priv->key_controller, "focus-in",